<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>Document</title>
  </head>
  <body>
    <script>
      /*
        async修饰符
        1. 修饰函数，修改函数的默认返回值，为 Promise 对象
        2. 可以手动修改Promise返回值，手动修后的函数就不需要 async 修饰了
        3. 可以手动添加一个非Promise返回值，会自动封装成Promise 被返回的值作为resolve的参数
        4. 抛出错误，也会被Promise对象封装，最后返回一个带有异常的Promise对象，并且可以使用catch捕捉错误
        6. 被async修饰的函数被称为异步函数。
        7. async 给 await 提供运行环境。
        */
      async function say() {
        throw new Error("...");
        // return Promise.reject(new Error("..."));
      }
      say()
        .then((data) => {
          console.log(data);
        })
        .catch((err) => {
          console.log(err);
        });
    </script>
  </body>
</html>
